在 C 语言中实现凯撒密码

您所在的位置:网站首页 恺撒 拼音 在 C 语言中实现凯撒密码

在 C 语言中实现凯撒密码

2024-07-13 01:23| 来源: 网络整理| 查看: 265

在 C 语言中实现凯撒密码处理常量字符串的方法 在 C 语言中实现凯撒密码来处理用户提供的字符串

本文将演示关于如何在 C 语言中实现凯撒密码的多种方法。

在 C 语言中实现凯撒密码处理常量字符串的方法

凯撒密码是一种最简单的加密方案,不能用于任何产品级的保密,而只是满足我们知识上的好奇心。凯撒本质上是具有给定位置数量的字母旋转技术。给定文本和位置 5,加密版本将包含右移 5 位的字符。请注意,旋转方向不是严格指定的,因为每种情况下都有其相反的旋转,从而得到相同的结果。

在下面的例子中,我们演示了如何加密硬编码的 string 文字。旋转位置取自用户输入,并检查数字是否在 [1,26]的区间内,因为这个例子只针对英文字母。接下来,我们执行 while 循环,在这个循环中,一个字符被检查是否有非字母值,然后才用给定的位置进行移位。这段代码只能处理小写字母,因为我们采用了代表 ASCII 编码中 a 的 97 值。同时,我们直接将编码后的值逐个字符输出到控制台。

#include #include #include #include const char *str = "arbitrary string to encode"; int main(void) { int shift; char num[16]; printf("Choose shift number [1-26]: "); fflush(stdout); if (fgets(num, 16, stdin) == NULL) exit(EXIT_FAILURE); shift = (int)strtol(num, NULL, 0); if (shift 26) { fprintf(stderr, "Shift number is out of range"); exit(EXIT_FAILURE); } while (*str) { if (!isspace(*str) || !isblank(*str)) printf("%c", (((*str - 97) + shift) % 26) + 97); else printf("%c", *str); str += 1; } exit(EXIT_SUCCESS); } 在 C 语言中实现凯撒密码来处理用户提供的字符串

另外,我们也可以重新实现之前的代码示例,从用户输入的文本和旋转位置中获取文本和旋转位置,验证它们,并对给定的字符串进行加密。与前一个例子相比,这个版本包括两个 fgets 调用和 malloc 来为明文分配动态内存。这个实现还处理了小写的字符串,将无法正确加密混合字符串。

#include #include #include #include enum { MAX_LEN = 1024 }; int main(void) { size_t len; int shift; char *text; char num[16]; text = malloc(MAX_LEN); if (text == NULL) { perror("malloc"); exit(EXIT_FAILURE); } printf("Input text to be encrypted (lowercase): "); fflush(stdout); if (fgets(text, MAX_LEN, stdin) == NULL) exit(EXIT_FAILURE); len = strlen(text); if (text[len - 1] == '\n') text[len - 1] = '\0'; len -= 1; printf("Choose shift number [1-26]: "); fflush(stdout); if (fgets(num, 16, stdin) == NULL) exit(EXIT_FAILURE); shift = (int)strtol(num, NULL, 0); if (shift 26) { fprintf(stderr, "Shift number is out of range"); exit(EXIT_FAILURE); } for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3